/* 本地数据存储管理 */
/**
 * 映射结构：
 * {
 *  "field":{
 *     data:{},
 *     save: 1234343321,    使用毫秒 getTime计算
 *    }
 * }
 */
export default {
  methods: {
    /** 获取本地数据
     * @param  {} feild       数据字段名称
     * @param  {} dat         存入库名称
     * @param  {} validTime   有效时间间隔 1 个单位/小时
     */
    getDataItem: function getDataItem(field, dat, time) {
      const database = dat || 'default0';
      const validTime = time || 1;
      const between = 1000 * 3600 * validTime;
      const ctime = new Date().getTime();
      const data = JSON.parse(localStorage.getItem(database));
      let out = null;
      if (Object.prototype.toString.call(data) === '[object Object]' && data[field]) {
        out = data[field];
        if (!isNaN(out.save) && (out.save - ctime < between)) {
          return out.data;
        } else {
          delete data[field];
          localStorage.setItem(dat, JSON.stringify(data));
          out = data[field];
        }
      }
      return out;
    },
    /** 存储为本地数据
       * @param  {} field          数据字段名称
       * @param  {} value          数据值
       * @param  {} dat='default0' 存入库名称
       * @param  {} validTime=1    有效时间间隔 1 个单位/小时
       */
    setDataItem: function setDataItem(field, value, dat, time) {
      const database = dat || 'default0';
      const validTime = time || 1;
      const between = 1000 * 3600 * validTime;
      const stime = new Date().getTime() + between;
      let data = null;
      try {
        data = JSON.parse(localStorage.getItem(database));
      } catch (e) {
        console.info(e);
      }
      if (Object.prototype.toString.call(data) === '[object Object]') {
        data[field] = { data: value, save: stime };
        localStorage.setItem(dat, JSON.stringify(data));
      } else {
        const defd = {};
        defd[field] = { data: value, save: stime };
        localStorage.setItem(dat, JSON.stringify(defd));
      }
    }
  }

};
